import router from './index';
import store from '@/store';
import { resetRouter } from './index';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';

// 导航全局前置守卫
router.beforeEach((to, from, next) => {
    NProgress.start();
    // 判断是否需要登录
    if (to.matched.length && !to.matched.some(item => item.meta.isLogin)) { // 不需要登录
        next();
    } else {
        // 需要登录
        // 判断是否需要登录  1.判断是否已经登陆了  2.根据token
        let token = store.state.login.userInfo.token;
        if (token) {
            // 判断是否有导航存储在vuex仓库里面 有进入  没有导航---获取动态导航
            if (store.state.menu.dyMenuList.length) { // 有导航
                next();
            } else {
                // 没有导航---获取导航
                store.dispatch('menu/getMenuList').then(baseRoutes => {
                    // router.addRoutes(baseRoutes); 旧的写法

                    // console.log('baseRoutes', baseRoutes);
                    // 重置路由
                    resetRouter();
                    baseRoutes.forEach(ele => {
                        router.addRoute(ele);
                    })
                    // 调用next()
                    // next({...to, replace: true}) 中断当前导航 执行新的导航
                    next({ ...to, replace: true });
                })
            }
        } else {
            next('/login');
        }
    }
})

router.afterEach(() => {
    NProgress.done();
})